Title:
In the YAML section of the document. A descriptive title & list of all group members.
Exploring the World of Video Games
Daniel Beidelschies and Brian Anderson
Introduction and Background:
An introduction that motivates & outlines a clear, specific set of research questions. Also, provide some background on your topic.
Introduction
Since the advancement of technology, the creation of video games has played an influential role in being a source of entertainment for everyone around the world. From the multitude of video games that have been created, everyone is able to find something that they enjoy in order to pass time, have fun, and fulfill their creative needs. With this idea, we wanted to look at how well different games, genres, and platforms did when it came to releasing games for everyone to play. This will allow us to understand how popularity ranks up between different types of games based on the sales around of the world. In addition, we were also curious on how much revenue this industry makes as we spent our own money to fully experience these games.
Research Questions
What are the most selling genres of games over the years? And across different regions?
What are the most selling platforms of games over the years across different regions? Is there connection between platforms sold and genre popularity?
What are the most selling game franchises based on global sales?
What are the ten most popular games over the years?
Data collection:
Specification of your data sources and collection process.
Scraping from Kaggle and importing to a dataset
Analysis:
This is the bulk of the report which either has a presentation of the group’s key findings and take-aways or gives the detail of how someone would interact and what people should take away from the shiny app. If you choose to do a shiny app, be sure to include a link to the shinyapps.io site.
At first, we looked at which genre of games was the most popular based on global sales.

From this animated graph, we saw that the Action genre was the most popular by the end of the time period in 2020. It was followed by Sports, Shooting, Role-playing, and Platform. At the beginning of the graph, platform was most selling until around the early 2000s when Action, Sports, Role-playing took a major incline. Furthermore, Action and Sports experienced a gradual linear path whereas Shooting, Role-Playing, and Platform followed a steady linear path.
Next, we looked at the total sales of each genre in different locations around the world including North America, Europe, Japan, and other areas that aren’t considered from the former three.




From these graphs, we found that Action remained the highest selling genre in North America, Europe, and other regions. Although, it was a different story for Japan as Role-playing was the most popular genre, about two times higher than the second competing genre of Action.
With this information, we then wanted to see how different genres were spread throughout the different platforms and determine if there was a connection between the platforms and the sales of specific genres.





From these graphs we see that in North America, the top genres are sold consistently well in all platforms, especially Xbox 360. In Europe and other regions, we see similar patterns with top three genres selling well on all platforms, especially PS3 and PS2 respectively. In Japan, Role playing outsold all the genres in every platform with DS seeing the major part of sales.
It can be understood that these genres have franchises that bring the majority of the sales so we wanted to take a look at how well the leading franchises of these genres did in terms of global sales. In addition, we looked to understand how our favorite franchises ranked up against each other.

Based on this graph, we saw that the most selling franchise was Call of Duty followed by Pokemon. This makes sense from our personal experience that these franchises would be the most selling. It was interesting to see that a Shooter genre was the highest selling despite Action being the fan favorite.
After learning this, we wanted to take a look at the most selling individual games and determine which games from these franchises sold the best.

From this, we see that Wii Sports is most selling followed by Grand theft Auto V. Individual games from some of the major franchises are clearly represented with some repeated genres. It can be seen that highest selling games belong to certain genres and that consumers prefer one over another.
Lessons learned:
We learned how to create multi-layered charts that show more than just a x and y axis, where a third aspect of how one variable can affect the outcome of a chart and give more information to a story. Also adding animation to static plots in order to help visualize a better story of data over time.
Challenges:
Throughout our exploration of the data, we saw several limitations that prevented us from doing exactly what we wanted to do. These included the types of variables used for genre as we wanted to know what constituted what as a genre in games as well as multi-genred games. From our experience, we thought that some games could be classified as other genres from what it was in the dataset. The dataset was quite limited as we wanted look at the sales in specific regions around the world but there was only specific details about major contributors to the industry.
Conclusion:
From our explorations of video game sales, we can conclude that the majority of consumers greatly enjoy some genres over others with Action, Sports, and Shooters taking the most global sales. It seems as if individuals find entertainment in doing things that are intangible to reality. As we look at different locations around the world, the popularity of genres, platforms, and individual games are quite different, giving evidence to differing cultural and social values. Furthermore, the advancement of technology towards quality and interface capabilities play a major role in appealing to consumer and video game enthusiast around the world.
LS0tCnRpdGxlOiAiRmluYWwgUHJvamVjdCBSZXBvcnQiCmF1dGhvcjogIkJyaWFuIEFuZGVyc29uIGFuZCBEYW5pZWwgQmVpZGVsc2NoaWVzIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIHRoZW1lOiBjZXJ1bGVhbgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIGVycm9yPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UpCmBgYAoKYGBge3IgbGlicmFyaWVzLCBlY2hvID0gRkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKSAgICAgIyBmb3IgZ3JhcGhpbmcgYW5kIGRhdGEgY2xlYW5pbmcKbGlicmFyeShsdWJyaWRhdGUpICAgICAjIGZvciBkYXRlIG1hbmlwdWxhdGlvbgpsaWJyYXJ5KGdndGhlbWVzKSAgICAgICMgZm9yIGV2ZW4gbW9yZSBwbG90dGluZyB0aGVtZQpsaWJyYXJ5KGdnYW5pbWF0ZSkgICAgICMgZm9yIGFkZGluZyBhbmltYXRpb24gbGF5ZXJzIHRvIGdncGxvdHMKbGlicmFyeSh0cmFuc2Zvcm1yKSAgICAjIGZvciAidHdlZW5pbmciIChnZ2FuaW1hdGUpCmxpYnJhcnkoZ2lmc2tpKSAgICAgICAgIyBmb3IgY3JlYXRpbmcgdGhlIGdpZgpsaWJyYXJ5KHNoaW55KSAgICAgICAgICMgZm9yIGNyZWF0aW5nIGludGVyYWN0aXZlIGFwcHMKbGlicmFyeShyZWFkcikKbGlicmFyeShwYXRjaHdvcmspCnRoZW1lX3NldCh0aGVtZV9taW5pbWFsKCkpICMgTXkgZmF2b3JpdGUgZ2dwbG90KCkgdGhlbWUgOikKYGBgCgojIyMgVGl0bGU6IAoKSW4gdGhlIFlBTUwgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnQuIEEgZGVzY3JpcHRpdmUgdGl0bGUgJiBsaXN0IG9mIGFsbCBncm91cCBtZW1iZXJzLgoKKipFeHBsb3JpbmcgdGhlIFdvcmxkIG9mIFZpZGVvIEdhbWVzKioKCkRhbmllbCBCZWlkZWxzY2hpZXMgYW5kIEJyaWFuIEFuZGVyc29uCgojIyMgSW50cm9kdWN0aW9uIGFuZCBCYWNrZ3JvdW5kOiAKCkFuIGludHJvZHVjdGlvbiB0aGF0IG1vdGl2YXRlcyAmIG91dGxpbmVzIGEgY2xlYXIsIHNwZWNpZmljIHNldCBvZiByZXNlYXJjaCBxdWVzdGlvbnMuIEFsc28sIHByb3ZpZGUgc29tZSBiYWNrZ3JvdW5kIG9uIHlvdXIgdG9waWMuCgojIyMjIyBJbnRyb2R1Y3Rpb24KClNpbmNlIHRoZSBhZHZhbmNlbWVudCBvZiB0ZWNobm9sb2d5LCB0aGUgY3JlYXRpb24gb2YgdmlkZW8gZ2FtZXMgaGFzIHBsYXllZCBhbiBpbmZsdWVudGlhbCByb2xlIGluIGJlaW5nIGEgc291cmNlIG9mIGVudGVydGFpbm1lbnQgZm9yIGV2ZXJ5b25lIGFyb3VuZCB0aGUgd29ybGQuIEZyb20gdGhlIG11bHRpdHVkZSBvZiB2aWRlbyBnYW1lcyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkLCBldmVyeW9uZSBpcyBhYmxlIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgdGhleSBlbmpveSBpbiBvcmRlciB0byBwYXNzIHRpbWUsIGhhdmUgZnVuLCBhbmQgZnVsZmlsbCB0aGVpciBjcmVhdGl2ZSBuZWVkcy4gV2l0aCB0aGlzIGlkZWEsIHdlIHdhbnRlZCB0byBsb29rIGF0IGhvdyB3ZWxsIGRpZmZlcmVudCBnYW1lcywgZ2VucmVzLCBhbmQgcGxhdGZvcm1zIGRpZCB3aGVuIGl0IGNhbWUgdG8gcmVsZWFzaW5nIGdhbWVzIGZvciBldmVyeW9uZSB0byBwbGF5LiBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gdW5kZXJzdGFuZCBob3cgcG9wdWxhcml0eSByYW5rcyB1cCBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBnYW1lcyBiYXNlZCBvbiB0aGUgc2FsZXMgYXJvdW5kIG9mIHRoZSB3b3JsZC4gSW4gYWRkaXRpb24sIHdlIHdlcmUgYWxzbyBjdXJpb3VzIG9uIGhvdyBtdWNoIHJldmVudWUgdGhpcyBpbmR1c3RyeSBtYWtlcyBhcyB3ZSBzcGVudCBvdXIgb3duIG1vbmV5IHRvIGZ1bGx5IGV4cGVyaWVuY2UgdGhlc2UgZ2FtZXMuIAoKIyMjIyBCYWNrZ3JvdW5kIGluZm9ybWF0aW9uCgpTaW5jZSBvdXIgaW5kaXZpZHVhbCBkaXNjb3ZlcnksIHdlIGhhdmUgYWx3YXlzIGhhZCBpbnRlcmVzdCBpbiB2aWRlbyBnYW1lcyBhbmQgd29uZGVyZWQgaG93IHRoZSBzYWxlcyBvZiB0aGVzZSBnYW1lcyBkaWZmZXJlZCBhY3Jvc3MgdGhlIHdvcmxkIGFzIHdlIGdyZXcgdXAgaW4gZGlmZmVyZW50IHJlZ2lvbnMuIEZ1cnRoZXJtb3JlLCB0aGUgdmlkZW8gZ2FtZXMgaW5kdXN0cnkgaGFzIGdhaW5lZCBwb3B1bGFyaXR5IGFuZCBpbnRlcmFjdGl2aXR5IG92ZXIgdGhlIHllYXJzIHdpdGggdGhlIHJlbGVhc2Ugb2YgZXZvbHZpbmcgdGVjaCBhbmQgd2Ugd2FudGVkIHRvIHNlZSBob3cgdGhlc2Ugc2FsZXMgd2VyZSByZWZsZWN0ZWQuIAoKIyMjIFJlc2VhcmNoIFF1ZXN0aW9ucwoKV2hhdCBhcmUgdGhlIG1vc3Qgc2VsbGluZyBnZW5yZXMgb2YgZ2FtZXMgb3ZlciB0aGUgeWVhcnM/IEFuZCBhY3Jvc3MgZGlmZmVyZW50IHJlZ2lvbnM/CgpXaGF0IGFyZSB0aGUgbW9zdCBzZWxsaW5nIHBsYXRmb3JtcyBvZiBnYW1lcyBvdmVyIHRoZSB5ZWFycyBhY3Jvc3MgZGlmZmVyZW50IHJlZ2lvbnM/IElzIHRoZXJlIGNvbm5lY3Rpb24gYmV0d2VlbiBwbGF0Zm9ybXMgc29sZCBhbmQgZ2VucmUgcG9wdWxhcml0eT8KCldoYXQgYXJlIHRoZSBtb3N0IHNlbGxpbmcgZ2FtZSBmcmFuY2hpc2VzIGJhc2VkIG9uIGdsb2JhbCBzYWxlcz8KCldoYXQgYXJlIHRoZSB0ZW4gbW9zdCBwb3B1bGFyIGdhbWVzIG92ZXIgdGhlIHllYXJzPwoKIyMjIERhdGEgY29sbGVjdGlvbjogCgpTcGVjaWZpY2F0aW9uIG9mIHlvdXIgZGF0YSBzb3VyY2VzIGFuZCBjb2xsZWN0aW9uIHByb2Nlc3MuCgpTY3JhcGluZyBmcm9tIEthZ2dsZSBhbmQgaW1wb3J0aW5nIHRvIGEgZGF0YXNldAoKYGBge3IsIGVjaG8gPSBGQUxTRX0KdmdzYWxlcyA8LSByZWFkX2NzdigidmdzYWxlcy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKFllYXIgPSBjb2xfaW50ZWdlcigpICkpCnZnc2FsZXMKYGBgCgojIyMgQW5hbHlzaXM6IAoKVGhpcyBpcyB0aGUgYnVsayBvZiB0aGUgcmVwb3J0IHdoaWNoIGVpdGhlciBoYXMgYSBwcmVzZW50YXRpb24gb2YgdGhlIGdyb3Vw4oCZcyBrZXkgZmluZGluZ3MgYW5kIHRha2UtYXdheXMgb3IgZ2l2ZXMgdGhlIGRldGFpbCBvZiBob3cgc29tZW9uZSB3b3VsZCBpbnRlcmFjdCBhbmQgd2hhdCBwZW9wbGUgc2hvdWxkIHRha2UgYXdheSBmcm9tIHRoZSBzaGlueSBhcHAuIElmIHlvdSBjaG9vc2UgdG8gZG8gYSBzaGlueSBhcHAsIGJlIHN1cmUgdG8gaW5jbHVkZSBhIGxpbmsgdG8gdGhlIHNoaW55YXBwcy5pbyBzaXRlLgoKQXQgZmlyc3QsIHdlIGxvb2tlZCBhdCB3aGljaCBnZW5yZSBvZiBnYW1lcyB3YXMgdGhlIG1vc3QgcG9wdWxhciBiYXNlZCBvbiBnbG9iYWwgc2FsZXMuIAoKYGBge3IsIGZpZy5hbHQgPSAiQW5pbWF0ZWQgTGluZSBHcmFwaCBzaG93aW5nIGN1bXVsYXRpdmUgdmlkZW8gZ2FtZSBzYWxlcyBieSBnZW5yZSBmcm9tIDE5ODAtMjAyMC4iLCBlY2hvPUZBTFNFfQp2Z3NhbGVzICU+JQogIGdyb3VwX2J5KCBZZWFyLEdlbnJlKSAlPiUgCiAgc3VtbWFyaXplKHRvdGFsX2dlbnJlX3N1bSA9IHN1bShHbG9iYWxfU2FsZXMpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBjb21wbGV0ZShZZWFyLEdlbnJlKSAlPiUgCiAgYXJyYW5nZShHZW5yZSxZZWFyKSAlPiUgCiAgZ3JvdXBfYnkoR2VucmUpICU+JSAKICByZXBsYWNlX25hKGxpc3QodG90YWxfZ2VucmVfc3VtID0gMCkpICU+JSAKICBtdXRhdGUoY3VtX2dlbnJlX3N1bSA9IGN1bXN1bSh0b3RhbF9nZW5yZV9zdW0pKSAlPiUKICBmaWx0ZXIoY3VtX2dlbnJlX3N1bSA+IDApICU+JSAKICBmaWx0ZXIobigpID49IDEzKSAlPiUgCiAgYXJyYW5nZShZZWFyLGRlc2MoY3VtX2dlbnJlX3N1bSkpICU+JQogIGRyb3BfbmEoKSAlPiUgCiAgbXV0YXRlKHJhbmsgPSAxOm4oKSkgJT4lIAogIGdncGxvdChhZXMoeCA9IFllYXIsCiAgICAgICAgICAgICB5ID0gY3VtX2dlbnJlX3N1bSwKICAgICAgICAgICAgIGNvbG9yID0gR2VucmUpKSArCiAgZ2VvbV9saW5lKHNpemUgPSAxLjUpICsKICBsYWJzKHRpdGxlID0gIlBvcHVsYXIgVmlkZW8gR2FtZSBHZW5yZXMgYmFzZWQgb24gV29ybGR3aWRlIFNhbGVzIiwKICAgICAgIHN1YnRpdGxlID0gIlllYXI6IHtmcmFtZV9hbG9uZ30iLAogICAgICAgeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGNhcHRpb24gPSAiUGxvdCBjcmVhdGVkIGJ5IEQuQi4gJiBCLkEuLCBEYXRhIGZyb20gVmdzYWxlcyIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygicmVkIiwgImdyZWVuIiwiYmx1ZSIsImJsYWNrIiwgInllbGxvdyIsImRlZXBwaW5rIiwiY3lhbiIsImRhcmttYWdlbnRhIiwic3RlZWxibHVlIiwibWlkbmlnaHRibHVlIiwic2llbm5hIiwgImdyZWVuNCIpKSsKICB0cmFuc2l0aW9uX3JldmVhbChZZWFyKQpgYGAKCkZyb20gdGhpcyBhbmltYXRlZCBncmFwaCwgd2Ugc2F3IHRoYXQgdGhlIEFjdGlvbiBnZW5yZSB3YXMgdGhlIG1vc3QgcG9wdWxhciBieSB0aGUgZW5kIG9mIHRoZSB0aW1lIHBlcmlvZCBpbiAyMDIwLiBJdCB3YXMgZm9sbG93ZWQgYnkgU3BvcnRzLCBTaG9vdGluZywgUm9sZS1wbGF5aW5nLCBhbmQgUGxhdGZvcm0uIEF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdyYXBoLCBwbGF0Zm9ybSB3YXMgbW9zdCBzZWxsaW5nIHVudGlsIGFyb3VuZCB0aGUgZWFybHkgMjAwMHMgd2hlbiBBY3Rpb24sIFNwb3J0cywgUm9sZS1wbGF5aW5nIHRvb2sgYSBtYWpvciBpbmNsaW5lLiBGdXJ0aGVybW9yZSwgQWN0aW9uIGFuZCBTcG9ydHMgZXhwZXJpZW5jZWQgYSBncmFkdWFsIGxpbmVhciBwYXRoIHdoZXJlYXMgU2hvb3RpbmcsIFJvbGUtUGxheWluZywgYW5kIFBsYXRmb3JtIGZvbGxvd2VkIGEgc3RlYWR5IGxpbmVhciBwYXRoLiAKCk5leHQsIHdlIGxvb2tlZCBhdCB0aGUgdG90YWwgc2FsZXMgb2YgZWFjaCBnZW5yZSBpbiBkaWZmZXJlbnQgbG9jYXRpb25zIGFyb3VuZCB0aGUgd29ybGQgaW5jbHVkaW5nIE5vcnRoIEFtZXJpY2EsIEV1cm9wZSwgSmFwYW4sIGFuZCBvdGhlciBhcmVhcyB0aGF0IGFyZW4ndCBjb25zaWRlcmVkIGZyb20gdGhlIGZvcm1lciB0aHJlZS4gCgpgYGB7ciwgZmlnLmFsdCA9ICJDb2x1bW4gY2hhcnQgc2hvd2luZyB0aGUgdG90YWwgZ2xvYmFsIHNhbGVzIG9mIGVhY2ggZ2VucmUgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4iLCBlY2hvID0gRkFMU0V9CnJlZ2lvbmdlbnJlc2FsZXMgPC0gdmdzYWxlcyAlPiUKICBncm91cF9ieSggR2VucmUpICU+JSAKICBzdW1tYXJpemUodG90YWxfTkFfZ2VucmVfc3VtID0gc3VtKE5BX1NhbGVzKSwgCiAgICAgICAgICAgIHRvdGFsX0VVX2dlbnJlX3N1bSA9IHN1bShFVV9TYWxlcyksIAogICAgICAgICAgICB0b3RhbF9KUF9nZW5yZV9zdW0gPSBzdW0oSlBfU2FsZXMpLAogICAgICAgICAgICB0b3RhbF9vdGhlcl9nZW5yZV9zdW0gPSBzdW0oT3RoZXJfU2FsZXMpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBjb21wbGV0ZShHZW5yZSkgJT4lIAogIGFycmFuZ2UoR2VucmUpICU+JSAKICBncm91cF9ieShHZW5yZSkgJT4lIAogIHJlcGxhY2VfbmEobGlzdCh0b3RhbF9OQV9nZW5yZV9zdW0gPSAwLCAKICAgICAgICAgICAgICAgICAgdG90YWxfRVVfZ2VucmVfc3VtID0gMCwgCiAgICAgICAgICAgICAgICAgIHRvdGFsX0pQX2dlbnJlX3N1bSA9IDAsIAogICAgICAgICAgICAgICAgICB0b3RhbF9vdGhlcl9nZW5yZV9zdW0gPSAwKSkgJT4lIAogIGZpbHRlcih0b3RhbF9OQV9nZW5yZV9zdW0gPiAwKQoKCmcxIDwtIGdncGxvdChyZWdpb25nZW5yZXNhbGVzKSArCiAgZ2VvbV9jb2woYWVzKHggPSB0b3RhbF9OQV9nZW5yZV9zdW0sCiAgICAgICAgICAgICAgIHkgPSBmY3RfcmVvcmRlcihHZW5yZSwgdG90YWxfTkFfZ2VucmVfc3VtKSwKICAgICAgICAgICAgICAgZmlsbCA9IGZhY3RvcihHZW5yZSkpKSArCiAgbGFicyh4ID0gIiIsIAogICAgICAgeSA9ICIiLCAKICAgICAgIGNhcHRpb24gPSAiUGxvdCBjcmVhdGVkIGJ5IEQuQi4gJiBCLkEuLCBEYXRhIGZyb20gVmdzYWxlcyIsCiAgICAgICB0aXRsZSA9ICJOb3J0aCBBbWVyaWNhbiBTYWxlcyBieSBHZW5yZSIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJBY3Rpb24iID0gInJlZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvbGUtUGxheWluZyIgPSAiYmx1ZSIpKQoKZzIgPC0gZ2dwbG90KHJlZ2lvbmdlbnJlc2FsZXMpICsKICBnZW9tX2NvbChhZXMoeCA9IHRvdGFsX0VVX2dlbnJlX3N1bSwKICAgICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKEdlbnJlLCB0b3RhbF9FVV9nZW5yZV9zdW0pLAogICAgICAgICAgICAgICBmaWxsID0gZmFjdG9yKEdlbnJlKSkpICsKICBsYWJzKHggPSAiIiwgCiAgICAgICB5ID0gIiIsCiAgICAgICBjYXB0aW9uID0gIlBsb3QgY3JlYXRlZCBieSBELkIuICYgQi5BLiwgRGF0YSBmcm9tIFZnc2FsZXMiLAogICAgICAgdGl0bGUgPSJFdXJvcGVhbiBTYWxlcyBieSBHZW5yZSIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJBY3Rpb24iID0gInJlZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvbGUtUGxheWluZyIgPSAiYmx1ZSIpKQoKZzMgPC0gZ2dwbG90KHJlZ2lvbmdlbnJlc2FsZXMpICsKICBnZW9tX2NvbChhZXMoeCA9IHRvdGFsX0pQX2dlbnJlX3N1bSwKICAgICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKEdlbnJlLCB0b3RhbF9KUF9nZW5yZV9zdW0pLAogICAgICAgICAgICAgICBmaWxsID0gZmFjdG9yKEdlbnJlKSkpICsKICBsYWJzKHggPSAiIiwgCiAgICAgICB5ID0gIiIsCiAgICAgICBjYXB0aW9uID0gIlBsb3QgY3JlYXRlZCBieSBELkIuICYgQi5BLiwgRGF0YSBmcm9tIFZnc2FsZXMiLAogICAgICAgdGl0bGUgPSAiSmFwYW5lc2UgU2FsZXMgYnkgR2VucmUiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiQWN0aW9uIiA9ICJyZWQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9sZS1QbGF5aW5nIiA9ICJibHVlIikpCgpnNCA8LSBnZ3Bsb3QocmVnaW9uZ2VucmVzYWxlcykgKwogIGdlb21fY29sKGFlcyh4ID0gdG90YWxfb3RoZXJfZ2VucmVfc3VtLAogICAgICAgICAgICAgICB5ID0gZmN0X3Jlb3JkZXIoR2VucmUsIHRvdGFsX290aGVyX2dlbnJlX3N1bSksCiAgICAgICAgICAgICAgIGZpbGwgPSBmYWN0b3IoR2VucmUpKSkgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGNhcHRpb24gPSAiUGxvdCBjcmVhdGVkIGJ5IEQuQi4gJiBCLkEuLCBEYXRhIGZyb20gVmdzYWxlcyIsCiAgICAgICB0aXRsZSA9ICJPdGhlciBSZWdpb24gU2FsZXMgYnkgR2VucmUiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIkFjdGlvbiIgPSAicmVkIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvbGUtUGxheWluZyI9ICJibHVlIikpCgoKZzEKZzIKZzQKZzMKYGBgCgoKRnJvbSB0aGVzZSBncmFwaHMsIHdlIGZvdW5kIHRoYXQgQWN0aW9uIHJlbWFpbmVkIHRoZSBoaWdoZXN0IHNlbGxpbmcgZ2VucmUgaW4gTm9ydGggQW1lcmljYSwgRXVyb3BlLCBhbmQgb3RoZXIgcmVnaW9ucy4gQWx0aG91Z2gsIGl0IHdhcyBhIGRpZmZlcmVudCBzdG9yeSBmb3IgSmFwYW4gYXMgUm9sZS1wbGF5aW5nIHdhcyB0aGUgbW9zdCBwb3B1bGFyIGdlbnJlLCBhYm91dCB0d28gdGltZXMgaGlnaGVyIHRoYW4gdGhlIHNlY29uZCBjb21wZXRpbmcgZ2VucmUgb2YgQWN0aW9uLiAKCldpdGggdGhpcyBpbmZvcm1hdGlvbiwgd2UgdGhlbiB3YW50ZWQgdG8gc2VlIGhvdyBkaWZmZXJlbnQgZ2VucmVzIHdlcmUgc3ByZWFkIHRocm91Z2hvdXQgdGhlIGRpZmZlcmVudCBwbGF0Zm9ybXMgYW5kIGRldGVybWluZSBpZiB0aGVyZSB3YXMgYSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHBsYXRmb3JtcyBhbmQgdGhlIHNhbGVzIG9mIHNwZWNpZmljIGdlbnJlcy4gCgoKYGBge3IsIGZpZy5oZWlnaHQgPSAxMCwgZmlnLndpZHRoID0gMTIsIGZpZy5hbHQgPSAiQ29sdW1uIGNoYXJ0IHNob3dpbmcgdGhlIHRvdGFsIHNhbGVzIG9mIGVhY2ggcGxhdGZvcm0gaW4gZGlmZmVyZW50IGxvY2F0aW9ucyB3aXRoIHRoZSBkaXN0cmlidXRpb24gb2YgZWFjaCBnZW5yZS4iLCBlY2hvID0gRkFMU0V9CnJlZ2lvbnBsYXRmb3Jtc2FsZXMgPC0gdmdzYWxlcyAlPiUKICBncm91cF9ieShQbGF0Zm9ybSwgR2VucmUpICU+JSAKICBzdW1tYXJpemUodG90YWxfTkFfcGxhdGZvcm1fc3VtID0gc3VtKE5BX1NhbGVzKSwgCiAgICAgICAgICAgIHRvdGFsX0VVX3BsYXRmb3JtX3N1bSA9IHN1bShFVV9TYWxlcyksIAogICAgICAgICAgICB0b3RhbF9KUF9wbGF0Zm9ybV9zdW0gPSBzdW0oSlBfU2FsZXMpLAogICAgICAgICAgICB0b3RhbF9vdGhlcl9wbGF0Zm9ybV9zdW0gPSBzdW0oT3RoZXJfU2FsZXMpLAogICAgICAgICAgICB0b3RhbF9nbG9iYWxfcGxhdGZvcm1fc3VtID0gc3VtKEdsb2JhbF9TYWxlcykpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGNvbXBsZXRlKFBsYXRmb3JtKSAlPiUgCiAgYXJyYW5nZShQbGF0Zm9ybSkgJT4lIAogIGdyb3VwX2J5KFBsYXRmb3JtKSAlPiUgCiAgcmVwbGFjZV9uYShsaXN0KHRvdGFsX05BX3BsYXRmb3JtX3N1bSA9IDAsIAogICAgICAgICAgICAgICAgICB0b3RhbF9FVV9wbGF0Zm9ybV9zdW0gID0gMCwgCiAgICAgICAgICAgICAgICAgIHRvdGFsX0pQX3BsYXRmb3JtX3N1bSAgPSAwLCAKICAgICAgICAgICAgICAgICAgdG90YWxfb3RoZXJfcGxhdGZvcm1fc3VtID0gMCkpICU+JSAKICBtdXRhdGUoY3VtX05BX3BsYXRfc3VtID0gY3Vtc3VtKHRvdGFsX05BX3BsYXRmb3JtX3N1bSksIAogICAgICAgICBjdW1fRVVfcGxhdF9zdW0gPSBjdW1zdW0odG90YWxfRVVfcGxhdGZvcm1fc3VtKSwKICAgICAgICAgY3VtX0pQX3BsYXRfc3VtID0gY3Vtc3VtKHRvdGFsX0pQX3BsYXRmb3JtX3N1bSksCiAgICAgICAgIGN1bV9vdGhlcl9wbGF0X3N1bSA9IGN1bXN1bSh0b3RhbF9vdGhlcl9wbGF0Zm9ybV9zdW0pLAogICAgICAgICBjdW1fZ2xvYmFsX3BsYXRfc3VtID0gY3Vtc3VtKHRvdGFsX2dsb2JhbF9wbGF0Zm9ybV9zdW0pKSAKICAKcDEgPC0gcmVnaW9ucGxhdGZvcm1zYWxlcyAlPiUgCiAgZmlsdGVyKHRvdGFsX05BX3BsYXRmb3JtX3N1bSA+MCkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX2NvbChhZXMoeCA9IHRvdGFsX05BX3BsYXRmb3JtX3N1bSwKICAgICAgICAgICAgIHkgPSBmY3RfcmVvcmRlcihQbGF0Zm9ybSwgY3VtX05BX3BsYXRfc3VtKSwKICAgICAgICAgICAgIGZpbGwgPSBmYWN0b3IoR2VucmUpLAogICAgICAgICAgICAgZ3JvdXAgPSBQbGF0Zm9ybSkpKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInJlZCIsICJncmVlbiIsImJsdWUiLCJibGFjayIsICJ5ZWxsb3dncmVlbiIsICJkZWVwcGluayIsImN5YW4iLCJkYXJrbWFnZW50YSIsInN0ZWVsYmx1ZSIsIm1pZG5pZ2h0Ymx1ZSIsImdvbGQiLCAiZ3JlZW40IikpKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGZpbGwgPSAiR2VucmUiLAogICAgICAgY2FwdGlvbiA9ICJQbG90IGNyZWF0ZWQgYnkgRC5CLiAmIEIuQS4sIERhdGEgZnJvbSBWZ3NhbGVzIiwKICAgICAgIHRpdGxlID0gIk5vcnRoIEFtZXJpY2FuIFNhbGVzIGJ5IFBsYXRmb3JtIikKCnAyIDwtIHJlZ2lvbnBsYXRmb3Jtc2FsZXMgJT4lIAogIHJlcGxhY2VfbmEobGlzdChjdW1fZ2xvYmFsX3BsYXRfc3VtID0gMCkpICU+JQogIGZpbHRlcihjdW1fZ2xvYmFsX3BsYXRfc3VtID4wKSAlPiUgCiAgZ2dwbG90KCkgKwogIGdlb21fY29sKGFlcyh4ID0gdG90YWxfRVVfcGxhdGZvcm1fc3VtLAogICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKFBsYXRmb3JtLCBjdW1fRVVfcGxhdF9zdW0pLAogICAgICAgICAgICAgZmlsbCA9IGZhY3RvcihHZW5yZSksCiAgICAgICAgICAgICBncm91cCA9IFBsYXRmb3JtKSkrCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicmVkIiwgImdyZWVuIiwiYmx1ZSIsImJsYWNrIiwgInllbGxvd2dyZWVuIiwgImRlZXBwaW5rIiwiY3lhbiIsImRhcmttYWdlbnRhIiwic3RlZWxibHVlIiwibWlkbmlnaHRibHVlIiwiZ29sZCIsICJncmVlbjQiKSkgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGZpbGwgPSAiR2VucmUiLAogICAgICAgY2FwdGlvbiA9ICJQbG90IGNyZWF0ZWQgYnkgRC5CLiAmIEIuQS4sIERhdGEgZnJvbSBWZ3NhbGVzIiwKICAgICAgIHRpdGxlID0gIkV1cm9wZWFuIFNhbGVzIGJ5IFBsYXRmb3JtIikKCnAzIDwtIHJlZ2lvbnBsYXRmb3Jtc2FsZXMgJT4lIAogIGZpbHRlcih0b3RhbF9KUF9wbGF0Zm9ybV9zdW0gPjApICU+JSAKICBnZ3Bsb3QoKSArCiAgZ2VvbV9jb2woYWVzKHggPSB0b3RhbF9KUF9wbGF0Zm9ybV9zdW0sCiAgICAgICAgICAgICB5ID0gZmN0X3Jlb3JkZXIoUGxhdGZvcm0sIGN1bV9KUF9wbGF0X3N1bSksCiAgICAgICAgICAgICBmaWxsID0gZmFjdG9yKEdlbnJlKSwKICAgICAgICAgICAgIGdyb3VwID0gUGxhdGZvcm0pKSsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJyZWQiLCAiZ3JlZW4iLCJibHVlIiwiYmxhY2siLCAieWVsbG93Z3JlZW4iLCAiZGVlcHBpbmsiLCJjeWFuIiwiZGFya21hZ2VudGEiLCJzdGVlbGJsdWUiLCJtaWRuaWdodGJsdWUiLCJnb2xkIiwgImdyZWVuNCIpKSsKICBsYWJzKHggPSAiIiwgCiAgICAgICB5ID0gIiIsCiAgICAgICBmaWxsID0gIkdlbnJlIiwKICAgICAgIGNhcHRpb24gPSAiUGxvdCBjcmVhdGVkIGJ5IEQuQi4gJiBCLkEuLCBEYXRhIGZyb20gVmdzYWxlcyIsCiAgICAgICB0aXRsZSA9IkphcGFuZXNlIFNhbGVzIGJ5IFBsYXRmb3JtIikKCnA0IDwtIHJlZ2lvbnBsYXRmb3Jtc2FsZXMgJT4lIAogIHJlcGxhY2VfbmEobGlzdChjdW1fZ2xvYmFsX3BsYXRfc3VtID0gMCkpICU+JQogIGZpbHRlcihjdW1fZ2xvYmFsX3BsYXRfc3VtID4wKSAlPiUgCiAgZ2dwbG90KCkgKwogIGdlb21fY29sKGFlcyh4ID0gdG90YWxfb3RoZXJfcGxhdGZvcm1fc3VtLAogICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKFBsYXRmb3JtLCBjdW1fb3RoZXJfcGxhdF9zdW0pLAogICAgICAgICAgICAgZmlsbCA9IGZhY3RvcihHZW5yZSksCiAgICAgICAgICAgICBncm91cCA9IFBsYXRmb3JtKSkrCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicmVkIiwgImdyZWVuIiwiYmx1ZSIsImJsYWNrIiwgInllbGxvd2dyZWVuIiwgImRlZXBwaW5rIiwiY3lhbiIsImRhcmttYWdlbnRhIiwic3RlZWxibHVlIiwibWlkbmlnaHRibHVlIiwiZ29sZCIsICJncmVlbjQiKSkrCiAgbGFicyh4ID0gIiIsIAogICAgICAgeSA9ICIiLAogICAgICAgZmlsbCA9ICJHZW5yZSIsCiAgICAgICBjYXB0aW9uID0gIlBsb3QgY3JlYXRlZCBieSBELkIuICYgQi5BLiwgRGF0YSBmcm9tIFZnc2FsZXMiLAogICAgICAgdGl0bGUgPSJPdGhlciBSZWdpb24gU2FsZXMgYnkgUGxhdGZvcm0iKQoKcDUgPC0gcmVnaW9ucGxhdGZvcm1zYWxlcyAlPiUgCiAgZmlsdGVyKHRvdGFsX2dsb2JhbF9wbGF0Zm9ybV9zdW0gPjApICU+JSAKICBnZ3Bsb3QoKSArCiAgZ2VvbV9jb2woYWVzKHggPSB0b3RhbF9nbG9iYWxfcGxhdGZvcm1fc3VtLAogICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKFBsYXRmb3JtLCBjdW1fZ2xvYmFsX3BsYXRfc3VtKSwKICAgICAgICAgICAgIGZpbGwgPSBmYWN0b3IoR2VucmUpLAogICAgICAgICAgICAgZ3JvdXAgPSBQbGF0Zm9ybSkpKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInJlZCIsICJncmVlbiIsImJsdWUiLCJibGFjayIsICJ5ZWxsb3dncmVlbiIsICJkZWVwcGluayIsImN5YW4iLCJkYXJrbWFnZW50YSIsInN0ZWVsYmx1ZSIsIm1pZG5pZ2h0Ymx1ZSIsImdvbGQiLCAiZ3JlZW40IikpKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGZpbGwgPSAiR2VucmUiLAogICAgICAgY2FwdGlvbiA9ICJQbG90IGNyZWF0ZWQgYnkgRC5CLiAmIEIuQS4sIERhdGEgZnJvbSBWZ3NhbGVzIiwKICAgICAgIHRpdGxlID0iR2xvYmFsIFNhbGVzIGJ5IFBsYXRmb3JtIikKCnAxCnAyCnA0CnAzCnA1CgpgYGAKCkZyb20gdGhlc2UgZ3JhcGhzIHdlIHNlZSB0aGF0IGluIE5vcnRoIEFtZXJpY2EsIHRoZSB0b3AgZ2VucmVzIGFyZSBzb2xkIGNvbnNpc3RlbnRseSB3ZWxsIGluIGFsbCBwbGF0Zm9ybXMsIGVzcGVjaWFsbHkgWGJveCAzNjAuIEluIEV1cm9wZSBhbmQgb3RoZXIgcmVnaW9ucywgd2Ugc2VlIHNpbWlsYXIgcGF0dGVybnMgd2l0aCB0b3AgdGhyZWUgZ2VucmVzIHNlbGxpbmcgd2VsbCBvbiBhbGwgcGxhdGZvcm1zLCBlc3BlY2lhbGx5IFBTMyBhbmQgUFMyIHJlc3BlY3RpdmVseS4gSW4gSmFwYW4sIFJvbGUgcGxheWluZyBvdXRzb2xkIGFsbCB0aGUgZ2VucmVzIGluIGV2ZXJ5IHBsYXRmb3JtIHdpdGggRFMgc2VlaW5nIHRoZSBtYWpvciBwYXJ0IG9mIHNhbGVzLiAKCkl0IGNhbiBiZSB1bmRlcnN0b29kIHRoYXQgdGhlc2UgZ2VucmVzIGhhdmUgZnJhbmNoaXNlcyB0aGF0IGJyaW5nIHRoZSBtYWpvcml0eSBvZiB0aGUgc2FsZXMgc28gd2Ugd2FudGVkIHRvIHRha2UgYSBsb29rIGF0IGhvdyB3ZWxsIHRoZSBsZWFkaW5nIGZyYW5jaGlzZXMgb2YgdGhlc2UgZ2VucmVzIGRpZCBpbiB0ZXJtcyBvZiBnbG9iYWwgc2FsZXMuIEluIGFkZGl0aW9uLCB3ZSBsb29rZWQgdG8gdW5kZXJzdGFuZCBob3cgb3VyIGZhdm9yaXRlIGZyYW5jaGlzZXMgcmFua2VkIHVwIGFnYWluc3QgZWFjaCBvdGhlci4gCgoKYGBge3IsIGZpZy5hbHQgPSAiQ29sdW1uIGNoYXJ0IHNob3dpbmcgdGhlIHRvdGFsIGdsb2JhbCBzYWxlcyBvZiBwb3B1bGFyIHZpZGVvIGdhbWUgZnJhbmNoaXNlcy4iLCBlY2hvID0gRkFMU0V9CnZnc2FsZXMgJT4lCiAgbXV0YXRlKE5hbWUgPSBpZmVsc2UoTmFtZSA9PSAiTWluZWNyYWZ0OiBTdG9yeSBNb2RlIiwgIk1pbmVjcmFmdCIsIE5hbWUpKSAlPiUKICBtdXRhdGUoTmFtZSA9IGlmZWxzZShOYW1lICVpbiUgYygiR3JhbmQgVGhlZnQgQXV0byBWIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JhbmQgVGhlZnQgQXV0bzogTGliZXJ0eSBDaXR5IFN0b3JpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHcmFuZCBUaGVmdCBBdXRvIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2Nrc3RhciBHYW1lcyBEb3VibGUgUGFjazogR3JhbmQgVGhlZnQgQXV0byBJSUkgJiBHcmFuZCBUaGVmdCBBdXRvIFZpY2UgQ2l0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyYW5kIFRoZWZ0IEF1dG86IENoaW5hdG93biBXYXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JhbmQgVGhlZnQgQXV0bzogU2FuIEFuZHJlYXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHcmFuZCBUaGVmdCBBdXRvOiBWaWNlIENpdHkgU3RvcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyYW5kIFRoZWZ0IEF1dG8gSVYiLCJHcmFuZCBUaGVmdCBBdXRvOiBTYW4gQW5kcmVhcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyYW5kIFRoZWZ0IEF1dG86IE1pc3Npb24gUGFjayAjMSwgTG9uZG9uIDE5NjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHcmFuZCBUaGVmdCBBdXRvOiBWaWNlIENpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHcmFuZCBUaGVmdCBBdXRvIElJSSIpLCAiR3JhbmQgVGhlZnQgQXV0byIsIE5hbWUpKSAlPiUgCiAgbXV0YXRlKE5hbWUgPSBpZmVsc2UoTmFtZSAlaW4lIGMoIlRldHJpcyIsICJUZXRyaXMgUGx1cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXRyaXMgRFMiLCJUZXRyaXMgV29ybGRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyBEWCIsICJUZXRyaXMgMiAoQWxsIHJlZ2lvbiBzYWxlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXRyaXMgMiIsICJUaGUgTmV4dCBUZXRyaXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV0cmlzIFBhcnR5IERlbHV4ZSIsICJUZXRyaXMgQXhpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyBPbmxpbmUiLCAiVGV0cmlzcGhlcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXRyaXMgMiArIEJvbWJsaXNzIiwgIlRoZSBOZXcgVGV0cmlzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV0cmlzIDIgKHdlZWtseSBqcCBzYWxlcykiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV0cmlzIEF0dGFjayIsICJUZXRyaXMgV29ybGRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFnaWNhbCBUZXRyaXMgQ2hhbGxlbmdlIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyBXb3JsZHMgKE9ubGluZSBFZGl0aW9uKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGFyIFdhcnM6IFRoZSBDbG9uZSBXYXJzICYgVGV0cmlzIFdvcmxkcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyBBdHRhY2siLCAiUHV5byBQdXlvIFRldHJpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyBFdm9sdXRpb24iLCAiVGV0cmlzIFVsdGltYXRlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIlRldHJpcyIsTmFtZSkpICU+JSAKICBtdXRhdGUoTmFtZSA9IGlmZWxzZShOYW1lICVpbiUgYygiU3VwZXIgTWFyaW8gQnJvcy4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgU3VwZXIgTWFyaW8gQnJvcy4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgU3VwZXIgTWFyaW8gQnJvcy4gV2lpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cGVyIE1hcmlvIEJyb3MuIDMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IFN1cGVyIE1hcmlvIEJyb3MuIDIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VwZXIgTWFyaW8gQnJvcy4gMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cGVyIE1hcmlvIEJyb3MuIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgU3VwZXIgTWFyaW8gQnJvcy4gVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cGVyIE1hcmlvIEJyb3MuOiBUaGUgTG9zdCBMZXZlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYXJpbyBCcm9zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NpYyBORVMgU2VyaWVzOiBTdXBlciBNYXJpbyBCcm9zLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB1enpsZSAmIERyYWdvbnMgWiArIFN1cGVyIE1hcmlvIEJyb3MuIEVkaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYW1pY29tIE1pbmk6IFN1cGVyIE1hcmlvIEJyb3MuIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYW1pY29tIE1pbmk6IE1hcmlvIEJyb3MuIiksIk1hcmlvIiwgTmFtZSkpICU+JQogIG11dGF0ZShOYW1lID0gaWZlbHNlKE5hbWUgJWluJSBjKCJQb2tlbW9uIFJlZC9Qb2tlbW9uIEJsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIEdvbGQvUG9rZW1vbiBTaWx2ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIERpYW1vbmQvUG9rZW1vbiBQZWFybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gUnVieS9Qb2tlbW9uIFNhcHBoaXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBCbGFjay9Qb2tlbW9uIFdoaXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBYL1Bva2Vtb24gWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gSGVhcnRHb2xkL1Bva2Vtb24gU291bFNpbHZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gT21lZ2EgUnVieS9Qb2tlbW9uIEFscGhhIFNhcHBoaXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBGaXJlUmVkL1Bva2Vtb24gTGVhZkdyZWVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBCbGFjayAyL1Bva2Vtb24gV2hpdGUgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gU3RhZGl1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gUGluYmFsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gTXlzdGVyeSBEdW5nZW9uOiBFeHBsb3JlcnMgb2YgVGltZS9FeHBsb3JlcnMgb2YgRGFya25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFNuYXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFJhbmdlcjogU2hhZG93cyBvZiBBbG1pYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gUmFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBNeXN0ZXJ5IER1bmdlb246IFJlZC9CbHVlIFJlc2N1ZSBUZWFtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBCYXR0bGUgUmV2b2x1dGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gTXlzdGVyeSBEdW5nZW9uOiBFeHBsb3JlcnMgb2YgU2t5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBQaW5iYWxsOiBSdWJ5ICYgU2FwcGhpcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFJhbmdlcjogR3VhcmRpYW4gU2lnbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIE15c3RlcnkgRHVuZ2VvbjogR2F0ZXMgdG8gSW5maW5pdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFhEOiBHYWxlIG9mIERhcmtuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBTdXBlciBNeXN0ZXJ5IER1bmdlb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFJ1bWJsZSBCbGFzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gQ29ucXVlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIENhcmQgR0IyOiBIZXJlIENvbWVzIFRlYW0gR1IhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBEYXNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBUcm96ZWkhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rZW1vbiBBcnQgQWNhZGVteSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gUHV6emxlIExlYWd1ZSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIENoYW5uZWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmF0dGxlICYgR2V0ISBQb2tlbW9uIFR5cGluZyBEUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2Vtb24gQm94OiBSdWJ5ICYgU2FwcGhpcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIFJ1bWJsZSBXb3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaz9tb24gUGxhdGludW0gVmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaz9tb24gRW1lcmFsZCBWZXJzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbiBDcnlzdGFsIFZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2s/bW9uIFN0YWRpdW0gMiIsIlBvaz9tb24gQ29sb3NzZXVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbiBNeXN0ZXJ5IER1bmdlb246IEJsdWUgUmVzY3VlIFRlYW0iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP1BhcmsgV2lpOiBQaWthY2h1J3MgQWR2ZW50dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbiBNeXN0ZXJ5IER1bmdlb246IFJlZCBSZXNjdWUgVGVhbSAoVVMgd2Vla2x5IHNhbGVzKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2tlbiBUb3VybmFtZW50IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBva2VQYXJrIDI6IFdvbmRlcnMgQmV5b25kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbiBJIENob29zZSBZb3UgLyBTcXVpcnRsZSBTcXVhZCBHYW1lIEJveSBBZHZhbmNlIFZpZGVvIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaz9tb24gQmVhY2ggQmxhbmstb3V0IEJsYXN0b2lzZSAvIEdvIFdlc3QgWW91bmcgTWVvd3RoIEdhbWUgQm95IEFkdmFuY2UgVmlkZW8iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbjogSm9odG8gUGhvdG8gRmluaXNoOiBHYW1lIEJveSBBZHZhbmNlIFZpZGVvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9rP21vbjogRm9yIEhvLU9oIHRoZSBCZWxscyBUb2xsITogR2FtZSBCb3kgQWR2YW5jZSBWaWRlbyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXkgWW91LCBQaWthY2h1ISIpLAogICAgICAgICAgICAgICAgICAgICAgICJQb2tlbW9uIiwgTmFtZSkpICU+JSAKICBtdXRhdGUoTmFtZSA9IGlmZWxzZShOYW1lICVpbiUgYygiUGFjLU1hbiBDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjLU1hbjogQWR2ZW50dXJlcyBpbiBUaW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXMuIFBhYy1NYW4iLCJQYWMtTWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSnIuIFBhYy1NYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWMtTWFuIFBsYXllcidzIENob2ljZSBCdW5kbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWMtTWFuIFBhcnR5IiwiQ2xhc3NpYyBORVMgU2VyaWVzOiBQYWMtTWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjLU1hbiBBbGwtU3RhcnMiLCJQYWMtTWFuIEZldmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjLVBpeCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1zLiBQYWMtTWFuOiBNYXplIE1hZG5lc3MgLyBQYWMtTWFuIFdvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXMuIFBhYy1NYW46IE1hemUgTWFkbmVzcyIsIlBhYy1NYW4gJiBHYWxhZ2EgRGltZW5zaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhYy1NYW4gUGFydHkgM0QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWMtTWFuIFBpbmJhbGwgQWR2YW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhYy1NYW4gV29ybGQgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhYy1NYW4gUG93ZXIgUGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhYy1NYW4gV29ybGQgMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhYy1NYW4gYW5kIHRoZSBHaG9zdGx5IEFkdmVudHVyZXMgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBBQy1NQU4gYW5kIHRoZSBHaG9zdGx5IEFkdmVudHVyZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWMtTWFuIFdvcmxkIFJhbGx5IiksIAogICAgICAgICAgICAgICAgICAgICAgICJQYWMtTWFuIiwgTmFtZSkpICU+JQogIG11dGF0ZShOYW1lID0gaWZlbHNlKE5hbWUgJWluJSBjKCJDYWxsIG9mIER1dHk6IE1vZGVybiBXYXJmYXJlIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHk6IEJsYWNrIE9wcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGwgb2YgRHV0eTogQmxhY2sgT3BzIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHk6IEJsYWNrIE9wcyBJSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGwgb2YgRHV0eTogTW9kZXJuIFdhcmZhcmUgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGwgb2YgRHV0eTogR2hvc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5IDQ6IE1vZGVybiBXYXJmYXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBBZHZhbmNlZCBXYXJmYXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBXb3JsZCBhdCBXYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHk6IEZpbmVzdCBIb3VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5IDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIE9mIER1dHkgMjogQmlnIFJlZCBPbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHk6IFJvYWRzIHRvIFZpY3RvcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHkgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGwgb2YgRHV0eTogV29ybGQgYXQgV2FyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBXb3JsZCBhdCBXYXIgRmluYWwgRnJvbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5IEJsYWNrIE9wczogRGVjbGFzc2lmaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBNb2Rlcm4gV2FyZmFyZTogUmVmbGV4IEVkaXRpb24iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBNb2Rlcm4gV2FyZmFyZTogTW9iaWxpemVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBNb2Rlcm4gV2FyZmFyZSAzOiBEZWZpYW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGwgb2YgRHV0eTogVGhlIFdhciBDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbCBvZiBEdXR5OiBNb2Rlcm4gV2FyZmFyZSBUcmlsb2d5IiksIAogICAgICAgICAgICAgICAgICAgICAgICJDYWxsIG9mIER1dHkiLCBOYW1lKSkgJT4lIAogIG11dGF0ZShOYW1lID0gaWZlbHNlKE5hbWUgJWluJSBjKCJUaGUgU2ltcyAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXM6IFVubGVhc2hlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk15U2ltcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zOiBWYWNhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zOiBMaXZpbiBMYXJnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDQiLCJUaGUgU2ltcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zOiBCdXN0aW4nIE91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zOiBIb3VzZSBQYXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDI6IFBldHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltczogTWFraW4nIE1hZ2ljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXM6IEhvdCBEYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFVyYno6IFNpbXMgaW4gdGhlIENpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAzOiBMYXRlIE5pZ2h0IEV4cGFuc2lvbiBQYWNrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXM6IFN1cGVyc3RhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk15U2ltcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk15U2ltcyBLaW5nZG9tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDI6IE5pZ2h0bGlmZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDI6IENhc3Rhd2F5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXlTaW1zIEFnZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDI6IEFwYXJ0bWVudCBQZXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXM6IE1lZGlldmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgMzogSGlnaC1FbmQgTG9mdCBTdHVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDM6IEdlbmVyYXRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXlTaW1zIFJhY2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDM6IFdvcmxkIEFkdmVudHVyZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBPcGVuIGZvciBCdXNpbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDM6IEFtYml0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDM6IE91dGRvb3IgTGl2aW5nIFN0dWZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFVyYno6IFNpbXMgaW4gdGhlIENpdHkgKGFsbCByZWdpb25zIHNhbGVzKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDM6IFRvd24gTGlmZSBTdHVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk15U2ltcyBTa3lIZXJvZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNeVNpbXMgUGFydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyA0OiBHZXQgVG9nZXRoZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAzOiBTZWFzb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgTWVkaWV2YWw6IFBpcmF0ZXMgYW5kIE5vYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk15U2ltcyBDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgMjogQXBhcnRtZW50IExpZmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBJa2VhIEhvbWUgU3R1ZmYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAzOiBGYXN0IExhbmUgU3R1ZmYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAzOiBCYXJuYWNsZSBCYXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBTZWFzb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgMjogVW5pdmVyc2l0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIERlbHV4ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDQ6IFNwYSBEYXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBHbGFtb3VyIExpZmUgU3R1ZmYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBCb24gVm95YWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXM6IENvbXBsZXRlIENvbGxlY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyAyOiBIYXBweSBIb2xpZGF5IFN0dWZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFNpbXMgMjogRmFtaWx5IEZ1biBTdHVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBTaW1zIDQ6IEx1eHVyeSBQYXJ0eSBTdHVmZiIpLAogICAgICAgICAgICAgICAgICAgICAgICJUaGUgU2ltcyIsIE5hbWUpKSAlPiUgCiAgbXV0YXRlKE5hbWUgPSBpZmVsc2UoTmFtZSAlaW4lIGMoIkZpbmFsIEZhbnRhc3kgVklJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBWSUlJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSUkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFhJSUkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IElYIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYLTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IElJSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyaXNpcyBDb3JlOiBGaW5hbCBGYW50YXN5IFZJSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWElJSS0yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBWIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBUYWN0aWNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzc2lkaWE6IEZpbmFsIEZhbnRhc3kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFRhY3RpY3MgQWR2YW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgSUkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFhJVjogQSBSZWFsbSBSZWJvcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5OiBDcnlzdGFsIENocm9uaWNsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaXJnZSBvZiBDZXJiZXJ1czogRmluYWwgRmFudGFzeSBWSUkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFhJSTogUmV2ZW5hbnQgV2luZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFggLyBYLTIgSEQgUmVtYXN0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IElWIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBJICYgSUk6IERhd24gb2YgU291bHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFRhY3RpY3M6IFRoZSBXYXIgb2YgdGhlIExpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIEZpbmFsIEZhbnRhc3kgTGVnZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGlnaHRuaW5nIFJldHVybnM6IEZpbmFsIEZhbnRhc3kgWElJSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgVHlwZS0wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzc2lkaWEgMDEyOiBEdW9kZWNpbSBGaW5hbCBGYW50YXN5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEk6IFdpbmdzIG9mIHRoZSBHb2RkZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBBbnRob2xvZ3kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFRhY3RpY3MgQTI6IEdyaW1vaXJlIG9mIHRoZSBSaWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBMZWdlbmQgSUlJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBDcnlzdGFsIENocm9uaWNsZXM6IFJpbmcgb2YgRmF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFZJSSBJbnRlcm5hdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBJViBBZHZhbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeTogVGhlIDQgSGVyb2VzIG9mIExpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBBbm5pdmVyc2FyeSBFZGl0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBJVjogVGhlIENvbXBsZXRlIENvbGxlY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IENocm9uaWNsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IEV4cGxvcmVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgSUkgQW5uaXZlcnNhcnkgRWRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZWF0cmh5dGhtOiBGaW5hbCBGYW50YXN5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBDcnlzdGFsIENocm9uaWNsZXM6IEVjaG9lcyBvZiBUaW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBDcnlzdGFsIENocm9uaWNsZXM6IFRoZSBDcnlzdGFsIEJlYXJlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IEFkdmVudHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZWF0cmh5dGhtIEZpbmFsIEZhbnRhc3k6IEN1cnRhaW4gQ2FsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IElWIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSTogV2luZ3Mgb2YgdGhlIEdvZGRlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaWdodG5pbmcgUmV0dXJuczogRmluYWwgRmFudGFzeSBYSUlJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYLTI6IEludGVybmF0aW9uYWwgKyBMYXN0IE1pc3Npb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFZJIEFkdmFuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFggSW50ZXJuYXRpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEk6IFVsdGltYXRlIENvbGxlY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFYgQWR2YW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEk6IENoYWlucyBvZiBQcm9tYXRoaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IEZhYmxlczogQ2hvY29ibyBUYWxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEk6IFRyZWFzdXJlcyBvZiBBaHQgVXJoZ2FuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBGYWJsZXM6IENob2NvYm8ncyBEdW5nZW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWEk6IFZhbmEnZGllbCBDb2xsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSTogUmlzZSBvZiB0aGUgWmlsYXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSVY6IEhlYXZlbnN3YXJkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHJhZ29uIFF1ZXN0ICYgRmluYWwgRmFudGFzeSBpbiBJdGFkYWtpIFN0cmVldCBQb3J0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmFsIEZhbnRhc3kgWElJIEludGVybmF0aW9uYWwgWm9kaWFjIEpvYiBTeXN0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFZJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSBYSTogVmFuYSdkaWVsIENvbGxlY3Rpb24gMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc3NpZGlhOiBGaW5hbCBGYW50YXN5IFVuaXZlcnNhbCBUdW5pbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbCBGYW50YXN5IFhJOiBBbGwtSW4tT25lIFBhY2sgMjAwNiIpLCAKICAgICAgICAgICAgICAgICAgICAgICAiRmluYWwgRmFudGFzeSIsIE5hbWUpKSAlPiUgCiAgbXV0YXRlKE5hbWUgPSBpZmVsc2UoTmFtZSAlaW4lIGMoIkZJRkEgMTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIDE0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgMTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciAxMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIDExIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSAxNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIDA2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMDciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciAyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFN0cmVldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMTAgRklGQSBXb3JsZCBDdXAgU291dGggQWZyaWNhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMDkgQWxsLVBsYXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciBXb3JsZCBDaGFtcGlvbnNoaXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBOiBSb2FkIHRvIFdvcmxkIEN1cCA5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMTQgRklGQSBXb3JsZCBDdXAgQnJhemlsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSBTb2NjZXIgMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwMiBGSUZBIFdvcmxkIEN1cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkE6IFJvYWQgdG8gIFdvcmxkIEN1cCA5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgV29ybGQgQ3VwIEdlcm1hbnkgMjAwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgOTkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciA2NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU3RyZWV0IDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFN0cmVldCAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSAyMDAxIE1ham9yIExlYWd1ZSBTb2NjZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFNvY2NlciA5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIDk3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRklGQSAwNjogUm9hZCB0byBGSUZBIFdvcmxkIEN1cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgMDYgU29jY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvamVjdCBGSUZBIFdvcmxkIEN1cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgMjAwMTogTWFqb3IgTGVhZ3VlIFNvY2NlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgTWFuYWdlciAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZJRkEgU29jY2VyIDIwMDMgKHdlZWtseSBqcCBzYWxlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGSUZBIFdvcmxkIEN1cDogR2VybWFueSAyMDA2IiksIAogICAgICAgICAgICAgICAgICAgICAgICJGaWZhIiwgTmFtZSkpICU+JSAKICBncm91cF9ieShOYW1lKSAlPiUgCiAgc3VtbWFyaXNlKHRndnMgPSBzdW0oR2xvYmFsX1NhbGVzKSkgJT4lIAogIGZpbHRlcihOYW1lID09Ik1pbmVjcmFmdCIgfCBOYW1lID09ICJHcmFuZCBUaGVmdCBBdXRvIiB8IE5hbWUgPT0gIlRldHJpcyJ8CiAgICAgICAgICAgTmFtZSA9PSAiTWFyaW8iIHwgTmFtZSA9PSAiUG9rZW1vbiIgfCBOYW1lID09ICJQYWMtTWFuIiB8IAogICAgICAgICAgIE5hbWUgPT0gIkNhbGwgb2YgRHV0eSIgfCBOYW1lID09ICJUaGUgU2ltcyIgfCBOYW1lID09ICJGaW5hbCBGYW50YXN5IiB8CiAgICAgICAgICAgTmFtZSA9PSAiRmlmYSIpICU+JSAKICBhcnJhbmdlKGRlc2ModGd2cykpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSB0Z3ZzLAogICAgICAgICAgICAgeSA9IGZjdF9yZW9yZGVyKE5hbWUsIHRndnMpLAogICAgICAgICAgICAgZmlsbD1mYWN0b3IoTmFtZSkpKSArCiAgZ2VvbV9jb2woKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiZ3JheTQ1IiwiYmxhY2siLCAibGlnaHRibHVlIiwgIm9yYW5nZSIsICJyZWQiLCJkYXJrZ3JlZW4iLCJ5ZWxsb3ciLCJ5ZWxsb3ciLCJwdXJwbGUiLCAiZ3JlZW4iKSkgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwKICAgICAgIGNhcHRpb24gPSAiUGxvdCBjcmVhdGVkIGJ5IEQuQi4gJiBCLkEuLCBEYXRhIGZyb20gVmdzYWxlcyIsCiAgICAgICB0aXRsZSA9ICJNb3N0IFBvcHVsYXIgRnJhbmNoaXNlcyBieSBHbG9iYWwgU2FsZXMiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCkJhc2VkIG9uIHRoaXMgZ3JhcGgsIHdlIHNhdyB0aGF0IHRoZSBtb3N0IHNlbGxpbmcgZnJhbmNoaXNlIHdhcyBDYWxsIG9mIER1dHkgZm9sbG93ZWQgYnkgUG9rZW1vbi4gVGhpcyBtYWtlcyBzZW5zZSBmcm9tIG91ciBwZXJzb25hbCBleHBlcmllbmNlIHRoYXQgdGhlc2UgZnJhbmNoaXNlcyB3b3VsZCBiZSB0aGUgbW9zdCBzZWxsaW5nLiBJdCB3YXMgaW50ZXJlc3RpbmcgdG8gc2VlIHRoYXQgYSBTaG9vdGVyIGdlbnJlIHdhcyB0aGUgaGlnaGVzdCBzZWxsaW5nIGRlc3BpdGUgQWN0aW9uIGJlaW5nIHRoZSBmYW4gZmF2b3JpdGUuIAoKQWZ0ZXIgbGVhcm5pbmcgdGhpcywgd2Ugd2FudGVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBtb3N0IHNlbGxpbmcgaW5kaXZpZHVhbCBnYW1lcyBhbmQgZGV0ZXJtaW5lIHdoaWNoIGdhbWVzIGZyb20gdGhlc2UgZnJhbmNoaXNlcyBzb2xkIHRoZSBiZXN0LiAKCgpgYGB7ciwgZmlnLndpZHRoID0gOCwgZmlnLmFsdCA9ICJDb2x1bW4gY2hhcnQgc2hvd2luZyB0aGUgdG90YWwgZ2xvYmFsIHNhbGVzIG9mIHRoZSAgdG9wIHRlbiBtb3N0IHBvcHVsYXIgdmlkZW8gZ2FtZXMuIiwgZWNobyA9IEZBTFNFfQp2Z3NhbGVzICU+JSAKICBncm91cF9ieShOYW1lLEdlbnJlKSAlPiUgCiAgc3VtbWFyaXplKHRvdGFsX2dzID0gc3VtKEdsb2JhbF9TYWxlcykpICU+JSAKICBmaWx0ZXIodG90YWxfZ3M+MzApICU+JSAKICBhcnJhbmdlKGRlc2ModG90YWxfZ3MpKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gdG90YWxfZ3MsCiAgICAgICAgICAgICB5ID0gZmN0X3Jlb3JkZXIoTmFtZSwgdG90YWxfZ3MpLAogICAgICAgICAgICAgZmlsbCA9IEdlbnJlKSkgKwogIGdlb21fY29sKCkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInJlZCIsInllbGxvdyIsImRlZXBwaW5rIiwgImN5YW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFya21hZ2VudGEiLCJzdGVlbGJsdWUiLCJtaWRuaWdodGJsdWUiLCJnb2xkIikpICsKICBsYWJzKHggPSAiIiwgCiAgICAgICB5ID0gIiIsIAogICAgICAgY2FwdGlvbiA9ICJQbG90IGNyZWF0ZWQgYnkgRC5CLiAmIEIuQS4sIERhdGEgZnJvbSBWZ3NhbGVzIiwKICAgICAgIHRpdGxlID0gIk1vc3QgUG9wdWxhciBHYW1lcyBieSBHbG9iYWwgU2FsZXMiKSAKYGBgCgpGcm9tIHRoaXMsIHdlIHNlZSB0aGF0IFdpaSBTcG9ydHMgaXMgbW9zdCBzZWxsaW5nIGZvbGxvd2VkIGJ5IEdyYW5kIHRoZWZ0IEF1dG8gVi4gSW5kaXZpZHVhbCBnYW1lcyBmcm9tIHNvbWUgb2YgdGhlIG1ham9yIGZyYW5jaGlzZXMgYXJlIGNsZWFybHkgcmVwcmVzZW50ZWQgd2l0aCBzb21lIHJlcGVhdGVkIGdlbnJlcy4gSXQgY2FuIGJlIHNlZW4gdGhhdCBoaWdoZXN0IHNlbGxpbmcgZ2FtZXMgYmVsb25nIHRvIGNlcnRhaW4gZ2VucmVzIGFuZCB0aGF0IGNvbnN1bWVycyBwcmVmZXIgb25lIG92ZXIgYW5vdGhlci4gCgojIyMgTGVzc29ucyBsZWFybmVkOiAKCldlIGxlYXJuZWQgaG93IHRvIGNyZWF0ZSBtdWx0aS1sYXllcmVkIGNoYXJ0cyB0aGF0IHNob3cgbW9yZSB0aGFuIGp1c3QgYSB4IGFuZCB5IGF4aXMsIHdoZXJlIGEgdGhpcmQgYXNwZWN0IG9mIGhvdyBvbmUgdmFyaWFibGUgY2FuIGFmZmVjdCB0aGUgb3V0Y29tZSBvZiBhIGNoYXJ0IGFuZCBnaXZlIG1vcmUgaW5mb3JtYXRpb24gdG8gYSBzdG9yeS4gQWxzbyBhZGRpbmcgYW5pbWF0aW9uIHRvIHN0YXRpYyBwbG90cyBpbiBvcmRlciB0byBoZWxwIHZpc3VhbGl6ZSBhIGJldHRlciBzdG9yeSBvZiBkYXRhIG92ZXIgdGltZS4gCgojIyMgQ2hhbGxlbmdlczogCgpUaHJvdWdob3V0IG91ciBleHBsb3JhdGlvbiBvZiB0aGUgZGF0YSwgd2Ugc2F3IHNldmVyYWwgbGltaXRhdGlvbnMgdGhhdCBwcmV2ZW50ZWQgdXMgZnJvbSBkb2luZyBleGFjdGx5IHdoYXQgd2Ugd2FudGVkIHRvIGRvLiBUaGVzZSBpbmNsdWRlZCB0aGUgdHlwZXMgb2YgdmFyaWFibGVzIHVzZWQgZm9yIGdlbnJlIGFzIHdlIHdhbnRlZCB0byBrbm93IHdoYXQgY29uc3RpdHV0ZWQgd2hhdCBhcyBhIGdlbnJlIGluIGdhbWVzIGFzIHdlbGwgYXMgbXVsdGktZ2VucmVkIGdhbWVzLiBGcm9tIG91ciBleHBlcmllbmNlLCB3ZSB0aG91Z2h0IHRoYXQgc29tZSBnYW1lcyBjb3VsZCBiZSBjbGFzc2lmaWVkIGFzIG90aGVyIGdlbnJlcyBmcm9tIHdoYXQgaXQgd2FzIGluIHRoZSBkYXRhc2V0LiBUaGUgZGF0YXNldCB3YXMgcXVpdGUgbGltaXRlZCBhcyB3ZSB3YW50ZWQgbG9vayBhdCB0aGUgc2FsZXMgaW4gc3BlY2lmaWMgcmVnaW9ucyBhcm91bmQgdGhlIHdvcmxkIGJ1dCB0aGVyZSB3YXMgb25seSBzcGVjaWZpYyBkZXRhaWxzIGFib3V0IG1ham9yIGNvbnRyaWJ1dG9ycyB0byB0aGUgaW5kdXN0cnkuIAoKIyMjIENvbmNsdXNpb246IAoKRnJvbSBvdXIgZXhwbG9yYXRpb25zIG9mIHZpZGVvIGdhbWUgc2FsZXMsIHdlIGNhbiBjb25jbHVkZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjb25zdW1lcnMgZ3JlYXRseSBlbmpveSBzb21lIGdlbnJlcyBvdmVyIG90aGVycyB3aXRoIEFjdGlvbiwgU3BvcnRzLCBhbmQgU2hvb3RlcnMgdGFraW5nIHRoZSBtb3N0IGdsb2JhbCBzYWxlcy4gSXQgc2VlbXMgYXMgaWYgaW5kaXZpZHVhbHMgZmluZCBlbnRlcnRhaW5tZW50IGluIGRvaW5nIHRoaW5ncyB0aGF0IGFyZSBpbnRhbmdpYmxlIHRvIHJlYWxpdHkuIEFzIHdlIGxvb2sgYXQgZGlmZmVyZW50IGxvY2F0aW9ucyBhcm91bmQgdGhlIHdvcmxkLCB0aGUgcG9wdWxhcml0eSBvZiBnZW5yZXMsIHBsYXRmb3JtcywgYW5kIGluZGl2aWR1YWwgZ2FtZXMgYXJlIHF1aXRlIGRpZmZlcmVudCwgZ2l2aW5nIGV2aWRlbmNlIHRvIGRpZmZlcmluZyBjdWx0dXJhbCBhbmQgc29jaWFsIHZhbHVlcy4gRnVydGhlcm1vcmUsIHRoZSBhZHZhbmNlbWVudCBvZiB0ZWNobm9sb2d5IHRvd2FyZHMgcXVhbGl0eSBhbmQgaW50ZXJmYWNlIGNhcGFiaWxpdGllcyBwbGF5IGEgbWFqb3Igcm9sZSBpbiBhcHBlYWxpbmcgdG8gY29uc3VtZXIgYW5kIHZpZGVvIGdhbWUgZW50aHVzaWFzdCBhcm91bmQgdGhlIHdvcmxkLiAKCg==